// 入口文件
import Vue from 'vue'
import App from './App.vue'

//引入element组件库
import element from './plugins/elementUi/index';

//引入 vue-table-with-tree-grid组件库
import TreeTable from 'vue-table-with-tree-grid'
// 引入全局样式
import './assets/css/global.css'

//引入router器
import router from './router/index'
import axios from 'axios';

//关闭生产提示
Vue.config.productionTip = false

//注册插件
Vue.use(element);


// 注册组件库
Vue.component('tree-table', TreeTable)

//请求基地址
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'

// axios挂载原型链
//原型链产生污染（但是不推荐使用）
Vue.prototype.$http = axios

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 携带token
    config.headers.Authorization = window.sessionStorage.getItem('token');
    return config
  },
  error => {
    // 将异常返回给用户处理
    return Promise.reject(error)
  }
);


// 时间过滤器
Vue.filter('dateFormat', function (originaVal) {
  const dt = new Date(originaVal)
  const y = dt.getFullYear();
  const m = (dt.getMonth() + 1 + '').padStart(2, '0');
  const d = (dt.getDate() + '').padStart(2, '0');

  const hh = (dt.getHours() + '').padStart(2, '0');
  const mm = (dt.getMinutes() + '').padStart(2, '0');
  const ss = (dt.getSeconds() + '').padStart(2, '0');
  return `${y}-${m}-${d} ${hh}: ${mm}: ${ss}`
});


// 第一 全局注册 $bus 挂载到 vue的prototype上
// 第二 发布事件 \$bus.$emit('name', data)
// 第三 接收事件 \$bus.$on('name', data)
// 第四可以选择组件销毁时关闭事件总线$bus,不占用事件
// pubsuh

new Vue({
  el: '#app',
  render: h => h(App),
  router: router,
  // 事件总线的导入  
  beforeCreate() {
    Vue.prototype.$bus = this
  }
})
